<?php

/*
	任务列表（工作人员）
*/
defined('BY_JYA') or exit('error');
$_RQ['op']=$_RQ['op']?$_RQ['op']:'get';
$return=array();
$return['types']=array(
	'1'=>'常规模型',
	'2'=>'售后维护',
	'3'=>'服务模型',
);
$return['statuss']=array(
	'0'=>'待领取',
	'1'=>'处理中',
	'2'=>'处理完毕',
	'3'=>'审核完毕',
	'4'=>'审核不通过',
);
$set=pdo_get('jy_workline_set',array('uniacid'=>$_SESSION['uniacid']));
$return['default_type'] = explode("|",$set['default_type']);
$return['service_type'] = explode("|",$set['service_type']);
$return['bug_type'] = explode("|",$set['bug_type']);
if($_RQ['op']=='list'){
	$params=array('uniacid'=>$_SESSION['uniacid'],'getmid'=>$_SESSION['uid']);
	//类型。1表示开发任务，2表示bug修复任务，3表示客户异常问题处理
	if(!empty($_RQ['groupid'])){
		$params['groupid']=intval($_RQ['groupid']);
		$return['params']['groupid']=$_RQ['groupid'];
	}
	//状态。0表示待处理。1表示处理中。2表示处理完毕待审核。3表示审核通过。
	if(!empty($_RQ['status'])){
		$params['status']=intval($_RQ['status']);
		$return['params']['status']=$_RQ['status'];
	}
	//任务名称
	if(!empty($_RQ['title'])){
		$params['title like']='%'.trim($_RQ['title']).'%';
		$return['params']['title']=$_RQ['title'];
	}
	
	$orderby='id desc';
	$pindex = max(1, intval($_RQ['page']));
	$psize = 10;
	$total='';
	$list=pdo_getslice('jy_workline_task',$params,array($pindex,$psize),$total,$fields,'',$orderby);
	foreach($list as &$row){
		$row['groupid']=pdo_getcolumn('jy_workline_group',array('id'=>$row['groupid']),'title');
		$row['getmid']=pdo_getcolumn('jy_workline_worker',array('mid'=>$row['getmid']),'name');
	}
	$return['groups']=pdo_getall('jy_workline_group',array(),array('id','title'));
	$return['list']=$list?$list:array();
	$totalpage=ceil($total/$psize);
	$totalpage=intval($totalpage);
	$return['totalpage'] =$totalpage;
	$return['params']['page'] =$pindex;
	$htmls=array(
		'type'=>'list',
		'tabs'=>array(
			array('op'=>'get','title'=>'待领取的'),
			array('op'=>'list','title'=>'我领取的'),
			array('op'=>'alllist','title'=>'所有任务'),
			array('op'=>'edit','title'=>'添加任务'),
		),
		'list'=>array('data'=>'list','delall'=>false,'del_one'=>false,'list'=>array(
			array('name'=>'title','title'=>'任务名称','type'=>'string'),
			array('name'=>'credit','title'=>'任务积分','type'=>'string'),
			array('name'=>'groupid','title'=>'任务分类','type'=>'string'),
			array('name'=>'status','title'=>'任务状态','type'=>'radio','options'=>'statuss'),
			array('name'=>'receive_type','title'=>'领取方式','type'=>'radio','options'=>'receive_types'),
			array('name'=>'getmid','title'=>'领取人','type'=>'string'),
			array('name'=>'receive_time','title'=>'领取时间','type'=>'time'),
			array('name'=>'complete_time','title'=>'完成时间','type'=>'time'),
		),'action'=>array(
			array('type'=>'modal','op'=>'staff','title'=>'移交任务','show'=>array('status'=>0)),
			array('type'=>'modal','op'=>'complete','title'=>'提交任务','show'=>array('status'=>array(1,4))),
			array('type'=>'href','op'=>'data','title'=>'客户资料','show'=>array('type'=>3)),
			array('type'=>'href','op'=>'look','title'=>'查看任务','show'=>array('status !='=>4)),
			array('type'=>'href','op'=>'look','title'=>'不通过原因','show'=>array('status'=>4)),
		)),
		'search'=>array(
			array('type'=>'select','width'=>15,'name'=>'groupid','title'=>'任务分类','option_title'=>'title','options'=>'groups'),
			array('type'=>'radio','width'=>15,'name'=>'status','title'=>'任务状态','options'=>'statuss'),
			array('type'=>'string','width'=>15,'name'=>'title','title'=>'任务名称'),
		),
	);
	$return['htmls']=$htmls;
	$return['receive_types']=array(
		'1'=>'管理员指派',
		'2'=>'自己领取',
		'3'=>'发布者指派',
	);
	exi($return);
}
if($_RQ['op']=='alllist'){
	$params=array('uniacid'=>$_SESSION['uniacid']);
	//类型。1表示开发任务，2表示bug修复任务，3表示客户异常问题处理
	if(!empty($_RQ['groupid'])){
		$params['groupid']=intval($_RQ['groupid']);
		$return['params']['groupid']=$_RQ['groupid'];
	}
	//状态。0表示待处理。1表示处理中。2表示处理完毕待审核。3表示审核通过。
	if(!empty($_RQ['status'])){
		$params['status']=intval($_RQ['status']);
		$return['params']['status']=$_RQ['status'];
	}
	//任务名称
	if(!empty($_RQ['title'])){
		$params['title like']='%'.trim($_RQ['title']).'%';
		$return['params']['title']=$_RQ['title'];
	}
	
	$orderby='id desc';
	$pindex = max(1, intval($_RQ['page']));
	$psize = 10;
	$total='';
	$list=pdo_getslice('jy_workline_task',$params,array($pindex,$psize),$total,$fields,'',$orderby);
	foreach($list as &$row){
		$row['groupid']=pdo_getcolumn('jy_workline_group',array('id'=>$row['groupid']),'title');
		$row['getmid']=pdo_getcolumn('jy_workline_worker',array('mid'=>$row['getmid']),'name');
	}
	$return['groups']=pdo_getall('jy_workline_group',array(),array('id','title'));
	$return['list']=$list?$list:array();
	$totalpage=ceil($total/$psize);
	$totalpage=intval($totalpage);
	$return['totalpage'] =$totalpage;
	$return['params']['page'] =$pindex;
	$htmls=array(
		'type'=>'list',
		'tabs'=>array(
			array('op'=>'get','title'=>'待领取的'),
			array('op'=>'list','title'=>'我领取的'),
			array('op'=>'alllist','title'=>'所有任务'),
			array('op'=>'edit','title'=>'添加任务'),
		),
		'list'=>array('data'=>'list','delall'=>false,'del_one'=>false,'list'=>array(
			array('name'=>'title','title'=>'任务名称','type'=>'string'),
			array('name'=>'credit','title'=>'任务积分','type'=>'string'),
			array('name'=>'groupid','title'=>'任务分类','type'=>'string'),
			array('name'=>'status','title'=>'任务状态','type'=>'radio','options'=>'statuss'),
			array('name'=>'receive_type','title'=>'领取方式','type'=>'radio','options'=>'receive_types'),
			array('name'=>'getmid','title'=>'领取人','type'=>'string'),
			array('name'=>'receive_time','title'=>'领取时间','type'=>'time'),
			array('name'=>'complete_time','title'=>'完成时间','type'=>'time'),
		),'action'=>array(
			array('type'=>'modal','op'=>'staff','title'=>'指派任务','show'=>array('status'=>0)),
			array('type'=>'href','op'=>'data','title'=>'客户资料','show'=>array('type'=>3)),
			array('type'=>'href','op'=>'look','title'=>'查看任务','show'=>array('status !='=>4)),
			array('type'=>'href','op'=>'look','title'=>'不通过原因','show'=>array('status'=>4)),
		)),
		'search'=>array(
			array('type'=>'select','width'=>15,'name'=>'groupid','title'=>'任务分类','option_title'=>'title','options'=>'groups'),
			array('type'=>'radio','width'=>15,'name'=>'status','title'=>'任务状态','options'=>'statuss'),
			array('type'=>'string','width'=>15,'name'=>'title','title'=>'任务名称'),
		),
	);
	$return['htmls']=$htmls;
	$return['receive_types']=array(
		'1'=>'管理员指派',
		'2'=>'自己领取',
		'3'=>'发布者指派',
	);
	exi($return);
}
if($_RQ['op']=='get'){
	//领取新任务。展现所有待领取任务
	$params=array('uniacid'=>$_SESSION['uniacid'],'status'=>0);
	//类型。1表示开发任务，2表示bug修复任务，3表示客户异常问题处理
	if(!empty($_RQ['groupid'])){
		$params['groupid']=intval($_RQ['groupid']);
		$return['params']['groupid']=$_RQ['groupid'];
	}
	//任务名称
	if(!empty($_RQ['title'])){
		$params['title like']='%'.trim($_RQ['title']).'%';
		$return['params']['title']=$_RQ['title'];
	}
	$orderby='id asc';
	$pindex = max(1, intval($_RQ['page']));
	$psize = 10;
	$total='';
	$fields=array('id','groupid','credit','createtime','title');
	$list=pdo_getslice('jy_workline_task',$params,array($pindex,$psize),$total,$fields,'',$orderby);
	foreach($list as &$row){
		$row['groupid']=pdo_getcolumn('jy_workline_group',array('id'=>$row['groupid']),'title');
	}
	$return['groups']=pdo_getall('jy_workline_group',array(),array('id','title'));
	$return['list']=$list?$list:array();
	$totalpage=ceil($total/$psize);
	$totalpage=intval($totalpage);
	$return['totalpage'] =$totalpage;
	$return['params']['page'] =$pindex;
	$htmls=array(
		'type'=>'list',
		'tabs'=>array(
			array('op'=>'get','title'=>'待处理的'),
			array('op'=>'list','title'=>'我领取的'),
			array('op'=>'alllist','title'=>'所有任务'),
			array('op'=>'edit','title'=>'添加任务'),
		),
		'list'=>array('data'=>'list','delall'=>false,'edit'=>false,'del_one'=>false,'list'=>array(
			array('name'=>'title','title'=>'任务名称','type'=>'string'),
			array('name'=>'credit','title'=>'任务积分','type'=>'string'),
			array('name'=>'groupid','title'=>'任务分类','type'=>'string'),
			array('name'=>'createtime','title'=>'发布时间','type'=>'time'),
		),'action'=>array(
			array('type'=>'modal','op'=>'staff','title'=>'指派任务','show'=>array('status'=>0)),
			array('type'=>'href','op'=>'data','title'=>'客户资料','show'=>array('type'=>3)),
			array('type'=>'post','op'=>'get_work','title'=>'领取任务'),
			array('type'=>'href','op'=>'look','title'=>'查看任务'),
		)),
		'search'=>array(
			array('type'=>'select','width'=>15,'name'=>'type','title'=>'任务分类','option_title'=>'title','options'=>'groups'),
			array('type'=>'radio','width'=>15,'name'=>'status','title'=>'任务状态','options'=>'statuss'),
			array('type'=>'string','width'=>15,'name'=>'title','title'=>'任务名称'),
		),
	);
	$return['htmls']=$htmls;
	exi($return);
}
if($_RQ['op']=='get_work'){
	$id=intval($_RQ['id']);
	if(!$id){
		exi('请先选择任务！','error');
	}
	$check=pdo_get('jy_workline_task',array('id'=>$id),array('uniacid'));
	if(!$check){
		exi('指定任务不存在！','error');
	}
	if($check['getmid']){
		exi('任务已被领取！请选择其他任务！','error');
	}
	$update=array(
		'getmid'=>$_SESSION['uid'],
		'status'=>1,
		'receive_type'=>2,//2表示自己领取
		'receive_time'=>TIMESTAMP,
	);
	pdo_update('jy_workline_task',$update,array('id'=>$id));
	exi('领取成功！','','get');
}
//提交任务
if($_RQ['op']=='complete'){
	if($_RQ['postdata']){
		$post=get_postdata();
		$data=array(
			'result'=>trim($post['result']),
			'status'=>2,
		);
		$id=intval($post['id']);
		if(!$id){
			exi('请先选择任务！','error');
		}
		if(!$data['result']){
			exi('请先填写任务处理结果！','error');
		}
		pdo_update('jy_workline_task',$data,array('id'=>$id));
		exi('提交成功！','','list');
	}
	$id=intval($_RQ['id']);
	if(!$id){
		exi('请先选择任务！','error');
	}
	$item=pdo_get('jy_workline_task',array('id'=>$id),array('id','title','content'));
	if(!$item){
		exi('指定任务不存在！','error');
	}
	$return['item']=$item;
	$return['htmls']=array(
		'type'=>'edit',
		'desc'=>'提交任务',
		'edit'=>array(
			array('type'=>'string','name'=>'title','title'=>'任务名称','read'=>true),
			array('type'=>'string','name'=>'content','title'=>'任务内容','read'=>true),
			array('type'=>'text','name'=>'result','title'=>'处理结果','help'=>'这里填写任务处理结果。做些说明即可。如果是开发型任务，直接填写”处理完毕“即可。'),

		),
	);
	exi($return);
}
if($_RQ['op']=='look'){
	$id=intval($_RQ['id']);
	if(!$id){
		exi('请先选择任务！','error');
	}
	$item=pdo_get('jy_workline_task',array('id'=>$id),array('groupid','qid','title','content','status','image'));
	$item['assess'] = $item['assess']? $item['assess'] : '还未审核！';
	$item['image']=$item['image']?json_decode($item['image'],true):array();
	$return['item']=$item;
	$return['htmls']=array(
		'type'=>'look',
		'desc'=>'任务详情',
		'tabs'=>array(
			array('op'=>'list','title'=>'返回列表'),
		),
		'look'=>array(
			array('type'=>'string','name'=>'title','title'=>'任务名称'),
			array('type'=>'text','name'=>'content','title'=>'任务内容'),
			array('type'=>'images','name'=>'image','title'=>'截图'),
			array('type'=>'radio','name'=>'status','title'=>'状态','options'=>'statuss'),
		),
	);
	exi($return);
}
//查看客户资料
if($_RQ['op']=='data'){
	$id=intval($_RQ['id']);
	if(!$id){
		exi('请先选择任务！','error');
	}
	$work=pdo_get('jy_workline_task',array('id'=>$id),array('id','groupid','web','ftp','db'));
	$type=pdo_getcolumn('jy_workline_group',array('uniacid'=>$_SESSION['uniacid'],'id'=>$work['groupid']),'type');
	if(!$work){
		exi('指定任务不存在','error');
	}
	if($work['type']!=3){
		exi('任务模型为‘服务类’的，才可以查看客户资料！','error');
	}
	if(!$work['id']){
		exi('指定任务存在问题，无法查看客户资料！','error');
	}
	$return['item']=$work;
	$return['htmls']=array(
		'type'=>'look',
		'desc'=>'任务详情',
		'tabs'=>array(
			array('op'=>'list','title'=>'返回列表'),
		),
		'look'=>array(
			array('type'=>'text','name'=>'web','title'=>'网站资料'),
			array('type'=>'text','name'=>'ftp','title'=>'ftp'),
			array('type'=>'text','name'=>'db','title'=>'数据库资料'),
		),
	);
	exi($return);
}
//添加编辑任务
if($_RQ['op']=='edit'){
	if($_RQ['postdata']){
		$post=get_postdata();
		$data=array(
			'title'=>trim($post['title']),
			'groupid'=>intval($post['groupid']),
			'content'=>trim($post['content']),
			'image'=>ijson_encode($post['image']),
			'web'=>trim($post['web']),
			'ftp'=>trim($post['ftp']),
			'db'=>trim($post['db']),
			'credit'=>intval($post['credit']),
			'default_type'=>intval($post['default_type']),
			'service_type'=>intval($post['service_type']),
			'bug_type'=>intval($post['bug_type']),
			'project_type'=>intval($post['project_type']),
			'jiaji'=>intval($post['jiaji']),
		);
		$id=intval($post['id']);
		if($id){
			$tcpid = pdo_getcolumn('jy_workline_task',array('uniacid'=>$_SESSION['uniacid'],'id'=>$id),'tcpid');
			$tcplog = array('msg'=>trim($post['content']),'image'=>trim($post['image']));
			pdo_update('jy_workline_task',$data,array('uniacid'=>$_SESSION['uniacid'],'id'=>$id));
			pdo_update('jy_workline_tcplog',$tcplog,array('uniacid'=>$_SESSION['uniacid'],'tcpid'=>$tcpid));
		}else{
			$data['createtime']=TIMESTAMP;
			$data['setmid']=$_SESSION['uid'];
			$data['uniacid']=$_SESSION['uniacid'];
			pdo_insert('jy_workline_tcp',array('uniacid'=>$_SESSION['uniacid']));
			$tcpid=pdo_insertid();
			$data['tcpid']=$tcpid;
			pdo_insert('jy_workline_task',$data);
			$tcplog = array('uniacid'=>$_SESSION['uniacid'],'setmid'=>$_SESSION['uid'],'tcpid'=>$tcpid,'msg'=>trim($post['content']),'image'=>trim($post['image']),'createtime'=>TIMESTAMP);
			pdo_insert('jy_workline_tcplog',$tcplog);
		}
		exi('操作成功！','','list');
	}
	$id=intval($_RQ['id']);
	if($id){
		$item=pdo_get('jy_workline_task',array('id'=>$id));
	}else{
		$item=array();
	}
	$set=pdo_get('jy_workline_set',array('uniacid'=>$_SESSION['uniacid']));
	$return['groups']=pdo_getall('jy_workline_group',array(),array('id','title'));
	$return['item']=$item;
	$return['htmls']=array(
		'type'=>'edit',
		'tabs'=>array(
			array('op'=>'list','title'=>'返回任务列表'),
		),
		'desc'=>'设置任务信息',
		'edit'=>array(
			array('type'=>'string','name'=>'title','title'=>'任务名称'),
			array('type'=>'switch','name'=>'jiaji','title'=>'是否加急'),
			array('type'=>'select','name'=>'groupid','title'=>'任务分组','option_title'=>'title','options'=>'groups'),
			array('type'=>'radio','name'=>'type','title'=>'任务模型','options'=>'types'),
			array('type'=>'radio','name'=>'default_type','title'=>'小分类','help'=>'请先到参数设置--小分类--完善小分类内容','options'=>'default_type','show'=>array('type'=>1)),
			array('type'=>'radio','name'=>'bug_type','title'=>'小分类','help'=>'请先到参数设置--小分类--完善小分类内容','options'=>'bug_type','show'=>array('type'=>2)),
			array('type'=>'radio','name'=>'service_type','title'=>'小分类','help'=>'请先到参数设置--小分类--完善小分类内容','options'=>'service_type','show'=>array('type'=>3)),
			array('type'=>'text','name'=>'content','title'=>'任务内容'),
			array('type'=>'images','name'=>'image','title'=>'任务截图'),
			array('type'=>'text','name'=>'web','title'=>'网站资料','show'=>array('type'=>3)),
			array('type'=>'text','name'=>'ftp','title'=>'ftp','show'=>array('type'=>3)),
			array('type'=>'text','name'=>'db','title'=>'数据库资料','show'=>array('type'=>3)),
			array('type'=>'string','name'=>'credit','title'=>'任务积分'),
		),
	);
	exi($return);
}
//指派任务
if($_RQ['op']=='staff'){
	if($_RQ['postdata']){
		$post=get_postdata();
		$id=intval($post['id']);
		$item=pdo_get('jy_workline_task',array('id'=>$id),array('id','title','tcpid'));
		if($item['setmid'] == $_SESSION['uid']){
			$receive_type = 1;
		}else{
			$receive_type = 3;
		}
		$getmid = pdo_getcolumn('jy_workline_worker',array('id'=>intval($post['getmid'])),'mid');
		$data=array(
			'status'=>1,
			'receive_type'=>$receive_type,//1表示发布者指派
			'receive_time'=>TIMESTAMP,
			'getmid'=>$getmid,
		);
		if(!$id){
			exi('请先选择任务！','error');
		}
		if(!$data['getmid']){
			exi('请先选择处理人！','error');
		}
		pdo_update('jy_workline_task',$data,array('id'=>$id));
		exi('操作成功！','','list');
	}
	$id=intval($_RQ['id']);
	if(!$id){
		exi('请先选择任务！','error');
	}
	$item=pdo_get('jy_workline_task',array('id'=>$id),array('id','title','tcpid'));
	if(!$item){
		exi('指定任务不存在！','error');
	}
	$return['workers']=pdo_getall('jy_workline_worker',array('uniacid'=>$_SESSION['uniacid']));
	$return['item']=$item;
	$return['htmls']=array(
		'type'=>'edit',
		'desc'=>'指派特定人员处理任务',
		'edit'=>array(
			array('type'=>'string','name'=>'title','title'=>'任务名称','read'=>true),
			array('type'=>'select','name'=>'getmid','title'=>'指派处理人','option_title'=>'name','options'=>'workers'),
		),
	);
	exi($return);
}